namespace RBAC.Write.Api.Application.Command.QualityCommand
{
    using MediatR;
    using RBAC.ErrorCode;

    /// <summary>
    /// 新增质量工单 命令。
    /// </summary>
    /// <remarks>
    /// 处理器会生成工单号（QOyyMMddHHmmss），并写入主表 <c>QualityOrder</c>。
    /// 成功时返回新建记录的 Id；失败时返回 0 和失败信息。
    /// 
    /// 校验建议（在处理器内执行）：
    /// - <see cref="Title"/> 不能为空或全空白。
    /// - <see cref="ProductId"/> 必须存在且大于 0。
    /// 
    /// 调用示例（HTTP）：
    /// POST api/QualityOrder/Add
    /// </remarks>
    /// </summary>
    public class QualityOrderAddCommand : IRequest<APIResult<int>>
    {
        /// <summary>
        /// 工单标题（必填）。
        /// </summary>
        public string? Title { get; set; }

        /// <summary>
        /// 来源工单号（例如生产工单号），可选。
        /// </summary>
        public string? SourceWorkOrderNo { get; set; }

        /// <summary>
        /// 生产物品 Id（必填，> 0）。
        /// </summary>
        public long? ProductId { get; set; }

        /// <summary>
        /// 生产物品名称（可选，通常与主数据保持一致）。
        /// </summary>
        public string? ProductName { get; set; }

        /// <summary>
        /// 负责人用户 Id（可选）。
        /// </summary>
        public long? OwnerUserId { get; set; }

        /// <summary>
        /// 负责人用户名称（可选）。
        /// </summary>
        public string? OwnerUserName { get; set; }

        /// <summary>
        /// 备注（可选）。
        /// </summary>
        public string? Remark { get; set; }

        /// <summary>
        /// 创建人（可选，用于审计）。
        /// </summary>
        public string? CreateUser { get; set; }
    }
}
